#include <iostream>
using namespace std;

/*
    1.引用必须在定义的时候立马初始化(例外的情况：引用作为参数除外)
        int a=78;
        int &b;
        b=a;   //语法错误
        void swap3(int &a,int &b)  例外的情况：引用作为函数形参例外

    2.引用初始化以后不可以被改变
    引用最开始指向谁--》用于跟这个变量绑定在一起，不能改变
*/

int main()
{
    int n1 = 10;
    int n2 = 20;

    int &r1 = n1;
    cout << "r1 = " << r1 << endl;
    cout << "n1 = " << n1 << endl;

    // 如何理解这句话
    // 错误的理解：r1现在变成了n2的别名
    // 正确的理解：r1最开始指向n1，r1永远是n1的别名，把n2赋值给n1
    r1 = n2;
    cout << "r1 = " << r1 << endl;
    cout << "n1 = " << n1 << endl;
    cout << "n2 = " << n2 << endl;
}